package com.fjw.service.impl;

import com.fjw.mapper.MaterialMapper;
import com.fjw.pojo.Material;
import com.fjw.service.MaterialService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 就业资源资料业务逻辑实现类
 * 负责处理资料的增删改查及分类管理，对接数据库Material表
 */
@Service
public class MaterialServiceImpl implements MaterialService {

    @Autowired
    private MaterialMapper materialMapper;

    /**
     * 新增就业资源资料
     * @param material 资料实体，需包含标题、内容、分类、作者等必填信息
     */
    @Override
    public void add(Material material) {
        materialMapper.add(material);
    }

    /**
     * 通过ID查询资料详情
     * @param id 资料唯一标识
     * @return 资料实体对象，若不存在则返回null
     */
    @Override
    public Material findById(Integer id) {
        return materialMapper.findById(id);
    }

    /**
     * 通过分类查询资料列表
     * @param category 资料分类（如"简历模板"、"面试技巧"）
     * @return 该分类下的所有资料
     */
    @Override
    public List<Material> findByCategory(String category) {
        return materialMapper.findByCategory(category);
    }

    /**
     * 通过作者ID查询其发布的资料
     * @param author 作者ID（关联用户表主键）
     * @return 该作者发布的所有资料列表
     */
    @Override
    public List<Material> findByAuthor(Integer author) {
        return materialMapper.findByAuthor(author);
    }

    /**
     * 通过ID删除资料
     * @param id 资料ID
     */
    @Override
    public void deleteById(Integer id) {
        materialMapper.deleteById(id);
    }

    /**
     * 通过ID更新资料信息
     * @param material 包含更新内容的资料实体，需包含ID字段
     */
    @Override
    public void updateById(Material material) {
        materialMapper.updateById(material);
    }

    /**
     * 获取系统中所有资料
     * @return 全部资料列表
     */
    @Override
    public List<Material> getAll() {
        return materialMapper.getAll();
    }
}
